home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 2
/
AACD 2.iso
/
AACD
/
Magazine
/
GraphicsCards
/
StormMesa
/
src
/
attrib.s
< prev
next >
Wrap
Text File
|
1999-02-04
|
39KB
|
2,024 lines
; Storm C Compiler
; Work2:Mesa3/Mesa-3.0/src/attrib.c
mc68030
mc68881
XREF _gl_DrawBuffer
XREF _gl_error
XREF _gl_problem
XREF _q_memcpy
XREF _malloc
XREF _free
XREF _CC
SECTION "_new_attrib_node:0",CODE
;static struct gl_attrib_node *new_attrib_node( GLbitfield kind )
_new_attrib_node
move.l d2,-(a7)
move.l $8(a7),d2
L97
; an = (struct gl_attrib_node *) malloc( sizeof(struct gl_attrib
pea $C.w
jsr _malloc
addq.w #4,a7
move.l d0,a0
; if (an)
cmp.w #0,a0
beq.b L99
L98
; an->kind = kind;
move.l d2,(a0)
L99
move.l a0,d0
move.l (a7)+,d2
rts
SECTION "_gl_PushAttrib:0",CODE
rts
;void gl_PushAttrib( GLcontext* ctx, GLbitfield mask )
XDEF _gl_PushAttrib
_gl_PushAttrib
L164 EQU -$40
link a5,#L164
movem.l d2-d4/a2-a4,-(a7)
move.l $C(a5),d2
move.l $8(a5),a2
L101
; if (INSIDE_BEGIN_END(ctx))
move.l a2,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L103
L102
; gl_error( ctx, GL_INVALID_OPERATION, "glPushAttrib" );
move.l #L100,-(a7)
pea $502.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L103
; if (ctx->AttribStackDepth>=MAX_ATTRIB_STACK_DEPTH)
move.l $2170(a2),d0
cmp.l #$10,d0
blo.b L105
L104
; gl_error( ctx, GL_STACK_OVERFLOW, "glPushAttrib" );
move.l #L100,-(a7)
pea $503.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L105
; head = NULL;
clr.l -$8(a5)
; if (mask & GL_ACCUM_BUFFER_BIT)
move.l d2,d0
and.l #$200,d0
beq.b L107
L106
; attr = MALLOC_STRUCT( gl_accum_attrib );
pea $10.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
; attr, &ctx->Accu
pea $10.w
pea $21B4(a2)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_ACCUM_BUFFER_BIT );
pea $200.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L107
; if (mask & GL_COLOR_BUFFER_BIT)
move.l d2,d0
and.l #$4000,d0
beq.b L109
L108
; attr = MALLOC_STRUCT( gl_colorbuffer_attrib );
pea $52.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
; &ctx->Color, siz
pea $52.w
pea $21C4(a2)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_COLOR_BUFFER_BIT );
pea $4000.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L109
; if (mask & GL_CURRENT_BIT)
move.l d2,d0
and.l #1,d0
beq.b L111
L110
; attr = MALLOC_STRUCT( gl_current_attrib );
pea $86.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;r, &ctx->Current,
pea $86.w
pea $2216(a2)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_CURRENT_BIT );
pea 1.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L111
; if (mask & GL_DEPTH_BUFFER_BIT)
move.l d2,d0
and.l #$100,d0
beq.b L113
L112
; attr = MALLOC_STRUCT( gl_depthbuffer_attrib );
pea $A.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
; &ctx->Depth, siz
pea $A.w
pea $229C(a2)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_DEPTH_BUFFER_BIT );
pea $100.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L113
; if (mask & GL_ENABLE_BIT)
move.l d2,d0
and.l #$2000,d0
beq L124
L114
; attr = MALLOC_STRUCT( gl_enable_attrib );
pea $44.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
; attr->AlphaTest = ctx->Color.AlphaEnabled;
move.l a3,a0
move.b $21E6(a2),(a0)
; attr->AutoNormal = ctx->Eval.AutoNormal;
move.l a3,a0
move.b $22B8(a2),1(a0)
; attr->Blend = ctx->Color.BlendEnabled;
move.l a3,a0
move.b $21ED(a2),2(a0)
; for (i=0;
moveq #0,d0
bra.b L116
L115
; attr->ClipPlane[i] = ctx->Transform.ClipEnabled[i];
move.l a2,a0
add.l #$E536,a0
move.b 0(a0,d0.l),d1
lea 3(a3),a0
move.b d1,0(a0,d0.l)
addq.l #1,d0
L116
cmp.l #6,d0
blo.b L115
L117
; attr->ColorMaterial = ctx->Light.ColorMaterialEnabled;
lea $2318(a2),a0
add.l #$8E18,a0
move.b (a0),d0
move.l a3,a0
move.b d0,$9(a0)
; attr->CullFace = ctx->Polygon.CullFlag;
move.l a2,a0
add.l #$DDEE,a0
move.b $D(a0),d0
move.l a3,a0
move.b d0,$A(a0)
; attr->DepthTest = ctx->Depth.Test;
move.l a3,a0
move.b $22A4(a2),$B(a0)
; attr->Dither = ctx->Color.DitherFlag;
move.l a3,a0
move.b $2215(a2),$C(a0)
; attr->Fog = ctx->Fog.Enabled;
move.l a3,a0
move.b $22DE(a2),$D(a0)
; for (i=0;
moveq #0,d0
bra.b L119
L118
; attr->Light[i] = ctx->Light.Light[i].Enabled;
lea $2318(a2),a0
move.l d0,d1
muls.l #$10E2,d1
move.b $68(a0,d1.l),d1
lea $E(a3),a0
move.b d1,0(a0,d0.l)
addq.l #1,d0
L119
cmp.l #$8,d0
blo.b L118
L120
; attr->Lighting = ctx->Light.Enabled;
lea $2318(a2),a0
add.l #$8E06,a0
move.b (a0),d0
move.l a3,a0
move.b d0,$16(a0)
; attr->LineSmooth = ctx->Line.SmoothFlag;
move.l a2,a0
add.l #$B158,a0
move.b (a0),d0
move.l a3,a0
move.b d0,$17(a0)
; attr->LineStipple = ctx->Line.StippleFlag;
move.l a2,a0
add.l #$B158,a0
move.b 1(a0),d0
move.l a3,a0
move.b d0,$18(a0)
; attr->IndexLogicOp = ctx->Color.IndexLogicOpEnabled;
move.l a3,a0
move.b $2212(a2),$19(a0)
; attr->ColorLogicOp = ctx->Color.ColorLogicOpEnabled;
move.l a3,a0
move.b $2213(a2),$1A(a0)
; attr->Map1Color4 = ctx->Eval.Map1Color4;
move.l a3,a0
move.b $22A6(a2),$1B(a0)
; attr->Map1Index = ctx->Eval.Map1Index;
move.l a3,a0
move.b $22A7(a2),$1C(a0)
; attr->Map1Normal = ctx->Eval.Map1Normal;
move.l a3,a0
move.b $22A8(a2),$1D(a0)
; attr->Map1TextureCoord1 = ctx->Eval.Map1TextureCoord1;
move.l a3,a0
move.b $22A9(a2),$1E(a0)
; attr->Map1TextureCoord2 = ctx->Eval.Map1TextureCoord2;
move.l a3,a0
move.b $22AA(a2),$1F(a0)
; attr->Map1TextureCoord3 = ctx->Eval.Map1TextureCoord3;
move.l a3,a0
move.b $22AB(a2),$20(a0)
; attr->Map1TextureCoord4 = ctx->Eval.Map1TextureCoord4;
move.l a3,a0
move.b $22AC(a2),$21(a0)
; attr->Map1Vertex3 = ctx->Eval.Map1Vertex3;
move.l a3,a0
move.b $22AD(a2),$22(a0)
; attr->Map1Vertex4 = ctx->Eval.Map1Vertex4;
move.l a3,a0
move.b $22AE(a2),$23(a0)
; attr->Map2Color4 = ctx->Eval.Map2Color4;
move.l a3,a0
move.b $22AF(a2),$24(a0)
; attr->Map2Index = ctx->Eval.Map2Index;
move.l a3,a0
move.b $22B0(a2),$25(a0)
; attr->Map2Normal = ctx->Eval.Map2Normal;
move.l a3,a0
move.b $22B1(a2),$26(a0)
; attr->Map2TextureCoord1 = ctx->Eval.Map2TextureCoord1;
move.l a3,a0
move.b $22B2(a2),$27(a0)
; attr->Map2TextureCoord2 = ctx->Eval.Map2TextureCoord2;
move.l a3,a0
move.b $22B3(a2),$28(a0)
; attr->Map2TextureCoord3 = ctx->Eval.Map2TextureCoord3;
move.l a3,a0
move.b $22B4(a2),$29(a0)
; attr->Map2TextureCoord4 = ctx->Eval.Map2TextureCoord4;
move.l a3,a0
move.b $22B5(a2),$2A(a0)
; attr->Map2Vertex3 = ctx->Eval.Map2Vertex3;
move.l a3,a0
move.b $22B6(a2),$2B(a0)
; attr->Map2Vertex4 = ctx->Eval.Map2Vertex4;
move.l a3,a0
move.b $22B7(a2),$2C(a0)
; attr->Normalize = ctx->Transform.Normalize;
move.l a2,a0
add.l #$E4D2,a0
move.b $6B(a0),d0
move.l a3,a0
move.b d0,$2D(a0)
; attr->PointSmooth = ctx->Point.SmoothFlag;
move.l a2,a0
add.l #$DDD0,a0
move.b (a0),d0
move.l a3,a0
move.b d0,$2E(a0)
; attr->PolygonOffsetPoint = ctx->Polygon.OffsetPoint;
move.l a2,a0
add.l #$DDEE,a0
move.b $20(a0),d0
move.l a3,a0
move.b d0,$2F(a0)
; attr->PolygonOffsetLine = ctx->Polygon.OffsetLine;
move.l a2,a0
add.l #$DDEE,a0
move.b $21(a0),d0
move.l a3,a0
move.b d0,$30(a0)
; attr->PolygonOffsetFill = ctx->Polygon.OffsetFill;
move.l a2,a0
add.l #$DDEE,a0
move.b $22(a0),d0
move.l a3,a0
move.b d0,$31(a0)
; attr->PolygonSmooth = ctx->Polygon.SmoothFlag;
move.l a2,a0
add.l #$DDEE,a0
move.b $16(a0),d0
move.l a3,a0
move.b d0,$32(a0)
; attr->PolygonStipple = ctx->Polygon.StippleFlag;
move.l a2,a0
add.l #$DDEE,a0
move.b $17(a0),d0
move.l a3,a0
move.b d0,$33(a0)
; attr->RescaleNormals = ctx->Transform.RescaleNormals;
move.l a2,a0
add.l #$E4D2,a0
move.b $6C(a0),d0
move.l a3,a0
move.b d0,$34(a0)
; attr->Scissor = ctx->Scissor.Enabled;
move.l a2,a0
add.l #$DE92,a0
move.b (a0),d0
move.l a3,a0
move.b d0,$35(a0)
; attr->Stencil = ctx->Stencil.Enabled;
move.l a2,a0
add.l #$DEA4,a0
move.b (a0),d0
move.l a3,a0
move.b d0,$36(a0)
; attr->Texture = ctx->Texture.Enabled;
move.l a2,a0
add.l #$DEBA,a0
move.l $8(a0),d0
move.l a3,a0
move.l d0,$38(a0)
; for (i=0;
moveq #0,d0
bra.b L122
L121
; attr->TexGen[i] = ctx->Texture.Set[i].TexGenEnable
move.l a2,a0
add.l #$DEC6,a0
move.l d0,d1
muls.l #$BC,d1
move.l $14(a0,d1.l),d1
lea $3C(a3),a0
move.l d1,0(a0,d0.l*4)
addq.l #1,d0
L122
cmp.l #2,d0
blo.b L121
L123
; newnode = new_attrib_node( GL_ENABLE_BIT );
pea $2000.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L124
; if (mask & GL_EVAL_BIT)
move.l d2,d0
and.l #$10000,d0
beq.b L126
L125
; attr = MALLOC_STRUCT( gl_eval_attrib );
pea $38.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;Y( attr, &ctx->Ev
pea $38.w
pea $22A6(a2)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_EVAL_BIT );
move.l #$10000,-(a7)
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L126
; if (mask & GL_FOG_BIT)
move.l d2,d0
and.l #$80,d0
beq.b L128
L127
; attr = MALLOC_STRUCT( gl_fog_attrib );
pea $26.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;CPY( attr, &ctx->
pea $26.w
pea $22DE(a2)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_FOG_BIT );
pea $80.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L128
; if (mask & GL_HINT_BIT)
move.l d2,d0
and.l #$8000,d0
beq.b L130
L129
; attr = MALLOC_STRUCT( gl_hint_attrib );
pea $14.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;Y( attr, &ctx->Hi
pea $14.w
pea $2304(a2)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_HINT_BIT );
move.l #$8000,-(a7)
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L130
; if (mask & GL_LIGHTING_BIT)
move.l d2,d0
and.l #$40,d0
beq.b L132
L131
; attr = MALLOC_STRUCT( gl_light_attrib );
move.l #$8E40,-(a7)
jsr _malloc
addq.w #4,a7
move.l d0,a3
; attr, &ctx->Ligh
move.l #$8E40,-(a7)
pea $2318(a2)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_LIGHTING_BIT );
pea $40.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L132
; if (mask & GL_LINE_BIT)
move.l d2,d0
and.l #4,d0
beq.b L134
L133
; attr = MALLOC_STRUCT( gl_line_attrib );
pea $C.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;Y( attr, &ctx->Li
pea $C.w
move.l a2,a0
add.l #$B158,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_LINE_BIT );
pea 4.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L134
; if (mask & GL_LIST_BIT)
move.l d2,d0
and.l #$20000,d0
beq.b L136
L135
; attr = MALLOC_STRUCT( gl_list_attrib );
pea 4.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;Y( attr, &ctx->Li
pea 4.w
move.l a2,a0
add.l #$B164,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_LIST_BIT );
move.l #$20000,-(a7)
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L136
; if (mask & GL_PIXEL_MODE_BIT)
move.l d2,d0
and.l #$20,d0
beq.b L138
L137
; attr = MALLOC_STRUCT( gl_pixel_attrib );
pea $2C68.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
; attr, &ctx->Pixe
pea $2C68.w
move.l a2,a0
add.l #$B168,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_PIXEL_MODE_BIT );
pea $20.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L138
; if (mask & GL_POINT_BIT)
move.l d2,d0
and.l #2,d0
beq.b L140
L139
; attr = MALLOC_STRUCT( gl_point_attrib );
pea $1E.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
; attr, &ctx->Poin
pea $1E.w
move.l a2,a0
add.l #$DDD0,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_POINT_BIT );
pea 2.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L140
; if (mask & GL_POLYGON_BIT)
move.l d2,d0
and.l #$8,d0
beq.b L142
L141
; attr = MALLOC_STRUCT( gl_polygon_attrib );
pea $24.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;r, &ctx->Polygon,
pea $24.w
move.l a2,a0
add.l #$DDEE,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_POLYGON_BIT );
pea $8.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L142
; if (mask & GL_POLYGON_STIPPLE_BIT)
move.l d2,d0
and.l #$10,d0
beq.b L144
L143
; stipple = (GLuint *) malloc( 32*sizeof(GLuint) );
pea $80.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;Y( stipple, ctx->
pea $80.w
move.l a2,a0
add.l #$DE12,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_POLYGON_STIPPLE_BIT );
pea $10.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = stipple;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L144
; if (mask & GL_SCISSOR_BIT)
move.l d2,d0
and.l #$80000,d0
beq.b L146
L145
; attr = MALLOC_STRUCT( gl_scissor_attrib );
pea $12.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;r, &ctx->Scissor,
pea $12.w
move.l a2,a0
add.l #$DE92,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_SCISSOR_BIT );
move.l #$80000,-(a7)
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L146
; if (mask & GL_STENCIL_BUFFER_BIT)
move.l d2,d0
and.l #$400,d0
beq.b L148
L147
; attr = MALLOC_STRUCT( gl_stencil_attrib );
pea $16.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;r, &ctx->Stencil,
pea $16.w
move.l a2,a0
add.l #$DEA4,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_STENCIL_BUFFER_BIT );
pea $400.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L148
; if (mask & GL_TEXTURE_BIT)
move.l d2,d0
and.l #$40000,d0
beq L159
L149
; int texSet = ctx->Texture.CurrentSet;
move.l a2,a0
add.l #$DEBA,a0
move.l (a0),d1
; for (dim = 0;
moveq #0,d0
bra L157
L150
; if (dim == 0)
tst.l d0
bne.b L152
L151
; obj = ctx->Texture.Set[texSet].Current1D;
move.l a2,a0
add.l #$DEC6,a0
move.l d1,d3
muls.l #$BC,d3
add.l d3,a0
move.l $A8(a0),a4
bra.b L156
L152
; else if (dim == 1)
cmp.l #1,d0
bne.b L154
L153
; obj = ctx->Texture.Set[texSet].Current2D;
move.l a2,a0
add.l #$DEC6,a0
move.l d1,d3
muls.l #$BC,d3
add.l d3,a0
move.l $AC(a0),a4
bra.b L156
L154
; else if (dim == 2)
cmp.l #2,d0
bne.b L156
L155
; obj = ctx->Texture.Set[texSet].Current3D;
move.l a2,a0
add.l #$DEC6,a0
move.l d1,d3
muls.l #$BC,d3
add.l d3,a0
move.l $B0(a0),a4
L156
; ctx->Texture.Priority[dim] = obj->Priority;
move.l a4,a0
fmove.s $C(a0),fp0
move.l a2,a0
add.l #$E45A,a0
fmove.s fp0,0(a0,d0.l*4)
; ctx->Texture.BorderColor[dim][0] = obj->BorderColo
move.l a2,a0
add.l #$E466,a0
move.l d0,d4
asl.l #4,d4
move.l $10(a4),0(a0,d4.l)
; ctx->Texture.BorderColor[dim][1] = obj->BorderColo
lea $10(a4),a0
move.l 4(a0),d3
move.l a2,a0
add.l #$E466,a0
move.l d0,d4
asl.l #4,d4
lea 0(a0,d4.l),a0
move.l d3,4(a0)
; ctx->Texture.BorderColor[dim][2] = obj->BorderColo
lea $10(a4),a0
move.l $8(a0),d3
move.l a2,a0
add.l #$E466,a0
move.l d0,d4
asl.l #4,d4
lea 0(a0,d4.l),a0
move.l d3,$8(a0)
; ctx->Texture.BorderColor[dim][3] = obj->BorderColo
lea $10(a4),a0
move.l $C(a0),d3
move.l a2,a0
add.l #$E466,a0
move.l d0,d4
asl.l #4,d4
lea 0(a0,d4.l),a0
move.l d3,$C(a0)
; ctx->Texture.WrapS[dim] = obj->WrapS;
move.l a4,a0
move.l $20(a0),d3
move.l a2,a0
add.l #$E496,a0
move.l d3,0(a0,d0.l*4)
; ctx->Texture.WrapT[dim] = obj->WrapT;
move.l a4,a0
move.l $24(a0),d3
move.l a2,a0
add.l #$E4A2,a0
move.l d3,0(a0,d0.l*4)
; ctx->Texture.WrapR[dim] = obj->WrapR;
move.l a4,a0
move.l $28(a0),d3
move.l a2,a0
add.l #$E4AE,a0
move.l d3,0(a0,d0.l*4)
; ctx->Texture.MinFilter[dim] = obj->MinFilter;
move.l a4,a0
move.l $2C(a0),d3
move.l a2,a0
add.l #$E4BA,a0
move.l d3,0(a0,d0.l*4)
; ctx->Texture.MagFilter[dim] = obj->MagFilter;
move.l a4,a0
move.l $30(a0),d3
move.l a2,a0
add.l #$E4C6,a0
move.l d3,0(a0,d0.l*4)
addq.l #1,d0
L157
cmp.l #3,d0
blt L150
L158
; attr = MALLOC_STRUCT( gl_texture_attrib );
pea $618.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;r, &ctx->Texture,
pea $618.w
move.l a2,a0
add.l #$DEBA,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_TEXTURE_BIT );
move.l #$40000,-(a7)
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L159
; if (mask & GL_TRANSFORM_BIT)
move.l d2,d0
and.l #$1000,d0
beq.b L161
L160
; attr = MALLOC_STRUCT( gl_transform_attrib );
pea $6E.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
;ctx->Transform, s
pea $6E.w
move.l a2,a0
add.l #$E4D2,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_TRANSFORM_BIT );
pea $1000.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L161
; if (mask & GL_VIEWPORT_BIT)
and.l #$800,d2
beq.b L163
L162
; attr = MALLOC_STRUCT( gl_viewport_attrib );
pea $30.w
jsr _malloc
addq.w #4,a7
move.l d0,a3
; &ctx->Viewport,
pea $30.w
move.l a2,a0
add.l #$E540,a0
pea (a0)
move.l a3,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_VIEWPORT_BIT );
pea $800.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a3,4(a0)
; newnode->next = head;
move.l -$8(a5),$8(a0)
; head = newnode;
move.l a0,-$8(a5)
L163
; ctx->AttribStack[ctx->AttribStackDepth] = head;
lea $2174(a2),a0
move.l $2170(a2),d0
move.l -$8(a5),0(a0,d0.l*4)
; ctx->AttribStackDepth++;
addq.l #1,$2170(a2)
movem.l (a7)+,d2-d4/a2-a4
unlk a5
rts
L100
dc.b 'glPushAttrib',0
SECTION "_gl_PopAttrib:0",CODE
;void gl_PopAttrib( GLcontext* ctx )
XDEF _gl_PopAttrib
_gl_PopAttrib
L222 EQU -$24
link a5,#L222
movem.l d2/d3/a2-a4,-(a7)
move.l $8(a5),a2
L167
; if (INSIDE_BEGIN_END(ctx))
move.l a2,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L169
L168
; gl_error( ctx, GL_INVALID_OPERATION, "glPopAttrib" );
move.l #L165,-(a7)
pea $502.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
L169
; if (ctx->AttribStackDepth==0)
tst.l $2170(a2)
bne.b L171
L170
; gl_error( ctx, GL_STACK_UNDERFLOW, "glPopAttrib" );
move.l #L165,-(a7)
pea $504.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
L171
; ctx->AttribStackDepth--;
subq.l #1,$2170(a2)
; attr = ctx->AttribStack[ctx->AttribStackDepth];
lea $2174(a2),a0
move.l $2170(a2),d0
move.l 0(a0,d0.l*4),a4
; while (attr)
bra L220
L172
; switch (attr->kind)
move.l a4,a0
move.l (a0),d0
cmp.l #$400,d0
beq L201
bhi L223
cmp.l #$20,d0
beq L196
bhi.b L224
cmp.l #4,d0
beq L194
bhi.b L225
cmp.l #1,d0
beq L177
cmp.l #2,d0
beq L197
bra L218
L225
cmp.l #$8,d0
beq L198
cmp.l #$10,d0
beq L199
bra L218
L224
cmp.l #$100,d0
beq L178
bhi.b L226
cmp.l #$40,d0
beq L193
cmp.l #$80,d0
beq L191
bra L218
L226
cmp.l #$200,d0
beq.b L173
bra L218
L223
cmp.l #$8000,d0
beq L192
bhi.b L227
cmp.l #$2000,d0
beq L179
bhi.b L228
cmp.l #$800,d0
beq L213
cmp.l #$1000,d0
beq L202
bra L218
L228
cmp.l #$4000,d0
beq.b L174
bra L218
L227
cmp.l #$40000,d0
beq L203
bhi.b L229
cmp.l #$10000,d0
beq L190
cmp.l #$20000,d0
beq L195
bra L218
L229
cmp.l #$80000,d0
beq L200
bra L218
;
L173
;>Accum, attr->dat
pea $10.w
move.l a4,a1
move.l 4(a1),-(a7)
pea $21B4(a2)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L174
; oldDrawBuffer = ctx->Color.DrawBuffer;
move.l $21E2(a2),d2
; sizeof(struct gl_co
pea $52.w
move.l a4,a1
move.l 4(a1),-(a7)
pea $21C4(a2)
jsr _q_memcpy
add.w #$C,a7
; if (ctx->Color.DrawBuffer != oldDrawBuffer)
move.l $21E2(a2),d0
cmp.l d2,d0
beq.b L176
L175
; gl_DrawBuffer(ctx, ctx->Color.DrawBuffer);
move.l $21E2(a2),-(a7)
move.l a2,-(a7)
jsr _gl_DrawBuffer
addq.w #$8,a7
L176
;
bra L219
L177
; sizeof(struct gl_curren
pea $86.w
move.l a4,a1
move.l 4(a1),-(a7)
pea $2216(a2)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L178
; sizeof(struct gl_de
pea $A.w
move.l a4,a1
move.l 4(a1),-(a7)
pea $229C(a2)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L179
; enable = (struct gl_enable_attrib *) attr->d
move.l a4,a1
move.l 4(a1),a0
; ctx->Color.AlphaEnabled = enable->AlphaTest;
move.b (a0),$21E6(a2)
; ctx->Transform.Normalize = enable->AutoNorma
move.l a2,a1
add.l #$E53D,a1
move.b 1(a0),(a1)
; ctx->Color.BlendEnabled = enable->Blend;
move.b 2(a0),$21ED(a2)
; for (i=0;
moveq #0,d0
bra.b L181
L180
; ctx->Transform.ClipEnabled[i] = enable
lea 3(a0),a1
move.b 0(a1,d0.l),d1
move.l a2,a1
add.l #$E536,a1
move.b d1,0(a1,d0.l)
addq.l #1,d0
L181
cmp.l #6,d0
blo.b L180
L182
; ctx->Light.ColorMaterialEnabled = enable->ColorMaterial;
move.l a2,a1
add.l #$B130,a1
move.b $9(a0),(a1)
; ctx->Polygon.CullFlag = enable->CullFace;
move.l a2,a1
add.l #$DDFB,a1
move.b $A(a0),(a1)
; ctx->Depth.Test = enable->DepthTest;
move.b $B(a0),$22A4(a2)
; ctx->Color.DitherFlag = enable->Dither;
move.b $C(a0),$2215(a2)
; ctx->Fog.Enabled = enable->Fog;
move.b $D(a0),$22DE(a2)
; ctx->Light.Enabled = enable->Lighting;
move.l a2,a1
add.l #$B11E,a1
move.b $16(a0),(a1)
; ctx->Line.SmoothFlag = enable->LineSmooth;
move.l a2,a1
add.l #$B158,a1
move.b $17(a0),(a1)
; ctx->Line.StippleFlag = enable->LineStipple;
move.l a2,a1
add.l #$B159,a1
move.b $18(a0),(a1)
; ctx->Color.IndexLogicOpEnabled = enable->IndexLogicOp;
move.b $19(a0),$2212(a2)
; ctx->Color.ColorLogicOpEnabled = enable->ColorLogicOp;
move.b $1A(a0),$2213(a2)
; ctx->Eval.Map1Color4 = enable->Map1Color4;
move.b $1B(a0),$22A6(a2)
; ctx->Eval.Map1Index = enable->Map1Index;
move.b $1C(a0),$22A7(a2)
; ctx->Eval.Map1Normal = enable->Map1Normal;
move.b $1D(a0),$22A8(a2)
; ctx->Eval.Map1TextureCoord1 = enable->Map1TextureCoord1;
move.b $1E(a0),$22A9(a2)
; ctx->Eval.Map1TextureCoord2 = enable->Map1TextureCoord2;
move.b $1F(a0),$22AA(a2)
; ctx->Eval.Map1TextureCoord3 = enable->Map1TextureCoord3;
move.b $20(a0),$22AB(a2)
; ctx->Eval.Map1TextureCoord4 = enable->Map1TextureCoord4;
move.b $21(a0),$22AC(a2)
; ctx->Eval.Map1Vertex3 = enable->Map1Vertex3;
move.b $22(a0),$22AD(a2)
; ctx->Eval.Map1Vertex4 = enable->Map1Vertex4;
move.b $23(a0),$22AE(a2)
; ctx->Eval.Map2Color4 = enable->Map2Color4;
move.b $24(a0),$22AF(a2)
; ctx->Eval.Map2Index = enable->Map2Index;
move.b $25(a0),$22B0(a2)
; ctx->Eval.Map2Normal = enable->Map2Normal;
move.b $26(a0),$22B1(a2)
; ctx->Eval.Map2TextureCoord1 = enable->Map2TextureCoord1;
move.b $27(a0),$22B2(a2)
; ctx->Eval.Map2TextureCoord2 = enable->Map2TextureCoord2;
move.b $28(a0),$22B3(a2)
; ctx->Eval.Map2TextureCoord3 = enable->Map2TextureCoord3;
move.b $29(a0),$22B4(a2)
; ctx->Eval.Map2TextureCoord4 = enable->Map2TextureCoord4;
move.b $2A(a0),$22B5(a2)
; ctx->Eval.Map2Vertex3 = enable->Map2Vertex3;
move.b $2B(a0),$22B6(a2)
; ctx->Eval.Map2Vertex4 = enable->Map2Vertex4;
move.b $2C(a0),$22B7(a2)
; ctx->Transform.Normalize = enable->Normalize;
move.l a2,a1
add.l #$E53D,a1
move.b $2D(a0),(a1)
; ctx->Transform.RescaleNormals = enable->RescaleNormals;
move.l a2,a1
add.l #$E53E,a1
move.b $34(a0),(a1)
; ctx->Point.SmoothFlag = enable->PointSmooth;
move.l a2,a1
add.l #$DDD0,a1
move.b $2E(a0),(a1)
; ctx->Polygon.OffsetPoint = enable->PolygonOffsetPoint;
move.l a2,a1
add.l #$DE0E,a1
move.b $2F(a0),(a1)
; ctx->Polygon.OffsetLine = enable->PolygonOffsetLine;
move.l a2,a1
add.l #$DE0F,a1
move.b $30(a0),(a1)
; ctx->Polygon.OffsetFill = enable->PolygonOffsetFill;
move.l a2,a1
add.l #$DE10,a1
move.b $31(a0),(a1)
; ctx->Polygon.OffsetAny = ctx->Polygon.Offset
moveq #1,d0
move.l a2,a1
add.l #$DDEE,a1
tst.b $20(a1)
bne.b L186
L183
move.l a2,a1
add.l #$DDEE,a1
tst.b $21(a1)
bne.b L186
L184
move.l a2,a1
add.l #$DDEE,a1
tst.b $22(a1)
bne.b L186
L185
moveq #0,d0
L186
move.l a2,a1
add.l #$DE11,a1
move.b d0,(a1)
; ctx->Polygon.SmoothFlag = enable->PolygonSmooth;
move.l a2,a1
add.l #$DE04,a1
move.b $32(a0),(a1)
; ctx->Polygon.StippleFlag = enable->PolygonStipple;
move.l a2,a1
add.l #$DE05,a1
move.b $33(a0),(a1)
; ctx->Scissor.Enabled = enable->Scissor;
move.l a2,a1
add.l #$DE92,a1
move.b $35(a0),(a1)
; ctx->Stencil.Enabled = enable->Stencil;
move.l a2,a1
add.l #$DEA4,a1
move.b $36(a0),(a1)
; ctx->Texture.Enabled = enable->Texture;
move.l a2,a1
add.l #$DEC2,a1
move.l $38(a0),(a1)
; for (i=0;
moveq #0,d0
bra.b L188
L187
; ctx->Texture.Set[i].TexGenEnabled = en
lea $3C(a0),a1
move.l 0(a1,d0.l*4),d1
move.l a2,a1
add.l #$DEC6,a1
move.l d0,d2
muls.l #$BC,d2
move.l d1,$14(a1,d2.l)
addq.l #1,d0
L188
cmp.l #2,d0
blo.b L187
L189
;
bra L219
L190
;x->Eval, attr->da
pea $38.w
move.l a4,a1
move.l 4(a1),-(a7)
pea $22A6(a2)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L191
;ctx->Fog, attr->d
pea $26.w
move.l a4,a1
move.l 4(a1),-(a7)
pea $22DE(a2)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L192
;x->Hint, attr->da
pea $14.w
move.l a4,a1
move.l 4(a1),-(a7)
pea $2304(a2)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L193
;>Light, attr->dat
move.l #$8E40,-(a7)
move.l a4,a1
move.l 4(a1),-(a7)
pea $2318(a2)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L194
;x->Line, attr->da
pea $C.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$B158,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L195
;x->List, attr->da
pea 4.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$B164,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L196
;>Pixel, attr->dat
pea $2C68.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$B168,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L197
;>Point, attr->dat
pea $1E.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$DDD0,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L198
; sizeof(struct gl_polygo
pea $24.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$DDEE,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L199
;ctx->PolygonStipp
pea $80.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$DE12,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L200
; sizeof(struct gl_scisso
pea $12.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$DE92,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L201
; sizeof(struct gl_stenci
pea $16.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$DEA4,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L202
; sizeof(struct gl_tran
pea $6E.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$E4D2,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra L219
L203
; sizeof(struct gl_textur
pea $618.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$DEBA,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
; int texSet = ctx->Texture.CurrentSet;
move.l a2,a0
add.l #$DEBA,a0
move.l (a0),d1
; for (dim = 0;
moveq #0,d0
bra L211
L204
; if (dim == 0)
tst.l d0
bne.b L206
L205
; obj = ctx->Texture.Set[tex
move.l a2,a0
add.l #$DEC6,a0
move.l d1,d2
muls.l #$BC,d2
add.l d2,a0
move.l $A8(a0),a3
bra.b L210
L206
; else if (dim == 1)
cmp.l #1,d0
bne.b L208
L207
; obj = ctx->Texture.Set[tex
move.l a2,a0
add.l #$DEC6,a0
move.l d1,d2
muls.l #$BC,d2
add.l d2,a0
move.l $AC(a0),a3
bra.b L210
L208
; else if (dim == 2)
cmp.l #2,d0
bne.b L210
L209
; obj = ctx->Texture.Set[tex
move.l a2,a0
add.l #$DEC6,a0
move.l d1,d2
muls.l #$BC,d2
add.l d2,a0
move.l $B0(a0),a3
L210
; obj->Priority = ctx->Texture.Pri
move.l a2,a0
add.l #$E45A,a0
fmove.s 0(a0,d0.l*4),fp0
move.l a3,a0
fmove.s fp0,$C(a0)
; obj->BorderColor[0] = ctx->Textu
move.l a2,a0
add.l #$E466,a0
move.l d0,d2
asl.l #4,d2
move.l 0(a0,d2.l),d2
move.l d2,$10(a3)
; obj->BorderColor[1] = ctx->Textu
move.l a2,a0
add.l #$E466,a0
move.l d0,d2
asl.l #4,d2
lea 0(a0,d2.l),a0
move.l 4(a0),d2
lea $10(a3),a0
move.l d2,4(a0)
; obj->BorderColor[2] = ctx->Textu
move.l a2,a0
add.l #$E466,a0
move.l d0,d2
asl.l #4,d2
lea 0(a0,d2.l),a0
move.l $8(a0),d2
lea $10(a3),a0
move.l d2,$8(a0)
; obj->BorderColor[3] = ctx->Textu
move.l a2,a0
add.l #$E466,a0
move.l d0,d2
asl.l #4,d2
lea 0(a0,d2.l),a0
move.l $C(a0),d2
lea $10(a3),a0
move.l d2,$C(a0)
; obj->WrapS = ctx->Texture.WrapS[
move.l a2,a0
add.l #$E496,a0
move.l 0(a0,d0.l*4),d2
move.l a3,a0
move.l d2,$20(a0)
; obj->WrapT = ctx->Texture.WrapT[
move.l a2,a0
add.l #$E4A2,a0
move.l 0(a0,d0.l*4),d2
move.l a3,a0
move.l d2,$24(a0)
; obj->WrapR = ctx->Texture.WrapR[
move.l a2,a0
add.l #$E4AE,a0
move.l 0(a0,d0.l*4),d2
move.l a3,a0
move.l d2,$28(a0)
; obj->MinFilter = ctx->Texture.Mi
move.l a2,a0
add.l #$E4BA,a0
move.l 0(a0,d0.l*4),d2
move.l a3,a0
move.l d2,$2C(a0)
; obj->MagFilter = ctx->Texture.Ma
move.l a2,a0
add.l #$E4C6,a0
move.l 0(a0,d0.l*4),d2
move.l a3,a0
move.l d2,$30(a0)
addq.l #1,d0
L211
cmp.l #3,d0
blt L204
L212
;
bra L219
L213
; sizeof(struct gl_viewp
pea $30.w
move.l a4,a1
move.l 4(a1),-(a7)
move.l a2,a0
add.l #$E540,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
; if (ctx->Driver.Viewport)
tst.l $9E4(a2)
beq.b L215
L214
; (*ctx->Driver.Viewport)( ctx, ctx->Vie
move.l a2,a0
add.l #$E540,a0
move.l $C(a0),-(a7)
move.l a2,a0
add.l #$E540,a0
move.l $8(a0),-(a7)
move.l a2,a0
add.l #$E540,a0
move.l 4(a0),-(a7)
move.l a2,a0
add.l #$E540,a0
move.l (a0),-(a7)
move.l a2,-(a7)
move.l $9E4(a2),a0
jsr (a0)
add.w #$14,a7
L215
; if (ctx->Driver.DepthRange)
tst.l $9E8(a2)
beq.b L217
L216
; (*ctx->Driver.DepthRange)( ctx, ctx->V
move.l a2,a0
add.l #$E540,a0
fmove.s $14(a0),fp0
fmove.d fp0,-(a7)
move.l a2,a0
add.l #$E540,a0
fmove.s $10(a0),fp0
fmove.d fp0,-(a7)
move.l a2,-(a7)
move.l $9E8(a2),a0
jsr (a0)
add.w #$14,a7
L217
;
bra.b L219
L218
; gl_problem( ctx, "Bad attrib flag in PopAttr
move.l #L166,-(a7)
move.l a2,-(a7)
jsr _gl_problem
addq.w #$8,a7
;
L219
; next = attr->next;
move.l a4,a0
move.l $8(a0),-$8(a5)
; free( (void *) attr->data );
move.l a4,a1
move.l 4(a1),-(a7)
jsr _free
addq.w #4,a7
; free( (void *) attr );
move.l a4,-(a7)
jsr _free
addq.w #4,a7
; attr = next;
move.l -$8(a5),a4
L220
cmp.w #0,a4
bne L172
L221
; ctx->NewState = NEW_ALL;
move.l a2,a0
add.l #$E960,a0
move.l #$FF,(a0)
movem.l (a7)+,d2/d3/a2-a4
unlk a5
rts
L166
dc.b 'Bad attrib flag in PopAttrib',0
L165
dc.b 'glPopAttrib',0
SECTION "_gl_PushClientAttrib:0",CODE
;void gl_PushClientAttrib( GLcontext *ctx, GLbitfield mask )
XDEF _gl_PushClientAttrib
_gl_PushClientAttrib
movem.l d2/a2-a4,-(a7)
move.l $18(a7),d2
move.l $14(a7),a2
L231
; if (INSIDE_BEGIN_END(ctx))
move.l a2,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L233
L232
; gl_error( ctx, GL_INVALID_OPERATION, "glPushClientAttrib
move.l #L230,-(a7)
pea $502.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2-a4
rts
L233
; if (ctx->ClientAttribStackDepth>=MAX_CLIENT_ATTRIB_STACK_DEPTH)
move.l a2,a0
add.l #$E574,a0
move.l (a0),d0
cmp.l #$10,d0
blo.b L235
L234
; gl_error( ctx, GL_STACK_OVERFLOW, "glPushClientAttrib" );
move.l #L230,-(a7)
pea $503.w
move.l a2,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,d2/a2-a4
rts
L235
; head = NULL;
sub.l a3,a3
; if (mask & GL_CLIENT_PIXEL_STORE_BIT)
move.l d2,d0
and.l #1,d0
beq L237
L236
; attr = MALLOC_STRUCT( gl_pixelstore_attrib );
pea $1A.w
jsr _malloc
addq.w #4,a7
move.l d0,a4
;r, &ctx->Pack, si
pea $1A.w
move.l a2,a0
add.l #$E644,a0
pea (a0)
move.l a4,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_CLIENT_PACK_BIT );
move.l #$100000,-(a7)
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a4,4(a0)
; newnode->next = head;
move.l a3,$8(a0)
; head = newnode;
move.l a0,a3
; attr = MALLOC_STRUCT( gl_pixelstore_attrib );
pea $1A.w
jsr _malloc
addq.w #4,a7
move.l d0,a4
; &ctx->Unpack, si
pea $1A.w
move.l a2,a0
add.l #$E65E,a0
pea (a0)
move.l a4,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_CLIENT_UNPACK_BIT );
move.l #$200000,-(a7)
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a4,4(a0)
; newnode->next = head;
move.l a3,$8(a0)
; head = newnode;
move.l a0,a3
L237
; if (mask & GL_CLIENT_VERTEX_ARRAY_BIT)
and.l #2,d2
beq.b L239
L238
; attr = MALLOC_STRUCT( gl_array_attrib );
pea $8C.w
jsr _malloc
addq.w #4,a7
move.l d0,a4
; attr, &ctx->Arra
pea $8C.w
move.l a2,a0
add.l #$E5B8,a0
pea (a0)
move.l a4,-(a7)
jsr _q_memcpy
add.w #$C,a7
; newnode = new_attrib_node( GL_CLIENT_VERTEX_ARRAY_BIT );
pea 2.w
jsr _new_attrib_node
addq.w #4,a7
move.l d0,a0
; newnode->data = attr;
move.l a4,4(a0)
; newnode->next = head;
move.l a3,$8(a0)
; head = newnode;
move.l a0,a3
L239
; ctx->ClientAttribStack[ctx->ClientAttribStackDepth] = head;
move.l a2,a0
add.l #$E578,a0
move.l a2,a1
add.l #$E574,a1
move.l (a1),d0
move.l a3,0(a0,d0.l*4)
; ctx->ClientAttribStackDepth++;
move.l a2,a0
add.l #$E574,a0
move.l (a0),d0
addq.l #1,d0
move.l a2,a0
add.l #$E574,a0
move.l d0,(a0)
movem.l (a7)+,d2/a2-a4
rts
L230
dc.b 'glPushClientAttrib',0
SECTION "_gl_PopClientAttrib:0",CODE
;void gl_PopClientAttrib( GLcontext *ctx )
XDEF _gl_PopClientAttrib
_gl_PopClientAttrib
movem.l a2-a4,-(a7)
move.l $10(a7),a3
L242
; if (INSIDE_BEGIN_END(ctx))
move.l a3,a0
add.l #$E968,a0
move.l (a0),d0
cmp.l #$1A00,d0
beq.b L244
L243
; gl_error( ctx, GL_INVALID_OPERATION, "glPopClientAttrib"
move.l #L240,-(a7)
pea $502.w
move.l a3,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,a2-a4
rts
L244
; if (ctx->ClientAttribStackDepth==0)
move.l a3,a0
add.l #$E574,a0
tst.l (a0)
bne.b L246
L245
; gl_error( ctx, GL_STACK_UNDERFLOW, "glPopClientAttrib" );
move.l #L240,-(a7)
pea $504.w
move.l a3,-(a7)
jsr _gl_error
add.w #$C,a7
movem.l (a7)+,a2-a4
rts
L246
; ctx->ClientAttribStackDepth--;
move.l a3,a0
add.l #$E574,a0
move.l (a0),d0
subq.l #1,d0
move.l a3,a0
add.l #$E574,a0
move.l d0,(a0)
; attr = ctx->ClientAttribStack[ctx->ClientAttribStackDepth];
move.l a3,a0
add.l #$E578,a0
move.l a3,a1
add.l #$E574,a1
move.l (a1),d0
move.l 0(a0,d0.l*4),a2
; while (attr)
bra L253
L247
; switch (attr->kind)
move.l (a2),d0
cmp.l #$100000,d0
beq.b L248
bhi.b L255
cmp.l #2,d0
beq.b L250
bra.b L251
L255
cmp.l #$200000,d0
beq.b L249
bra.b L251
;
L248
; si
pea $1A.w
move.l 4(a2),-(a7)
move.l a3,a0
add.l #$E644,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra.b L252
L249
; si
pea $1A.w
move.l 4(a2),-(a7)
move.l a3,a0
add.l #$E65E,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra.b L252
L250
; sizeof(struct gl_array_at
pea $8C.w
move.l 4(a2),-(a7)
move.l a3,a0
add.l #$E5B8,a0
pea (a0)
jsr _q_memcpy
add.w #$C,a7
;
bra.b L252
L251
; gl_problem( ctx, "Bad attrib flag in PopClie
move.l #L241,-(a7)
move.l a3,-(a7)
jsr _gl_problem
addq.w #$8,a7
;
L252
; next = attr->next;
move.l $8(a2),a4
; free( (void *) attr->data );
move.l 4(a2),-(a7)
jsr _free
addq.w #4,a7
; free( (void *) attr );
move.l a2,-(a7)
jsr _free
addq.w #4,a7
; attr = next;
move.l a4,a2
L253
cmp.w #0,a2
bne L247
L254
; ctx->NewState = NEW_ALL;
move.l a3,a0
add.l #$E960,a0
move.l #$FF,(a0)
movem.l (a7)+,a2-a4
rts
L241
dc.b 'Bad attrib flag in PopClientAttrib',0
L240
dc.b 'glPopClientAttrib',0
END